const API = require('../../../utils/api')
// 引入高德SDK
const amapFile = require('../../../utils/amap-wx.130.js');
// 初始化实例
const myAmap = new amapFile.AMapWX({
  key: '85c641720722f1e97bd4ed6683d5a32b' // 替换为实际Key
});
Page({
  data: {
    latitude:0,//签到维度
    longitude:0,//签到经度
    markers:[],//标点
    circles: [], // 圆形覆盖物数组
    userLatitude:0,//用户当前维度
    userLongitude:0,//用户当前签到经度,
    signData:null, //签到数据信息
    location:null ,//签到的位置信息,
    signDetails:null //用户签到结果
  },
  async onLoad(options) {
    //获取签到数据信息
    let signData = JSON.parse(options.item)
    let location = JSON.parse(signData.signJson)
    let signRes = await API.signResult(signData.id)
    this.setData({
      signDetails:signRes,
      longitude: location.longitude,
      latitude: location.latitude,
      signData,
      location,
      markers: [{
        id: 1,
        longitude: location.longitude,
        latitude: location.latitude,
        iconPath: '../../../images/location-icon.png',
        width: 30,
        height: 30
      }],
      circles: [{
        latitude: location.latitude,
        longitude: location.longitude,
        color: '#FF0000AA', // 填充颜色（带透明度）
        fillColor: '#FF000022', // 边框颜色
        radius: location.range, // 半径（米）
        strokeWidth: 1 // 边框宽度
      }]
    });
    //this.loadUserLocation();
    //this.getUserFuzzyLocation()
    const { latitude, longitude } = await API.getFuzzyLocation()
    this.setData({
      userLongitude: longitude,
      userLatitude: latitude,
      markers: [...this.data.markers, {
        id: 2,
        longitude: longitude,
        latitude: latitude,
        width: 30,
        height: 30
      }]
    });
  },

  onShow() {
  },
  //点击地图定位到对应地点
  handleMapTap(e){
    this.setData({
      longitude: e.detail.longitude,
      latitude: e.detail.latitude,
      markers: [{
        id: 1,
        longitude: e.detail.longitude,
        latitude: e.detail.latitude,
        iconPath: '../../../images/location-icon.png',
        width: 30,
        height: 30
      }]
    });
  },
  //使用微信方法获取位置
  getCurrentLocationWeChat(){
    wx.getLocation({
      type: 'gcj02', // 关键参数，直接获取GCJ-02坐标
      success: (res) => {
        this.setData({
          userLatitude: res.latitude,
          userLongitude: res.longitude,
          markers: [...this.data.markers,{
            id: 2,
            userLongitude: res.longitude,
            userLatitude: res.latitude,
            width: 30,
            height: 30
          }]
        });
      },
      fail: (err) => {
        console.error('获取位置失败:', err);
        wx.showToast({
          title: '获取位置失败',
          icon: 'none'
        });
      }
    });
  },
  //签到方法
 async gpsSign(){
    let centers = this.getDistance(this.data.latitude,this.data.longitude,this.data.userLatitude,this.data.userLongitude);
    console.log('centers',centers)
    if(centers>this.data.location.range){
      wx.showToast({
        title: '不在签到范围',
        icon: 'error'
      });
      //return
    }
    if(!this.data.signData){
      wx.showToast({
        title: '数据错误',
        icon: 'error'
      });
      return
    }
    //记录用户签到位置
    let detailsData = {latitude:this.data.userLatitude,longitude:this.data.userLongitude}
    await API.signIn(this.data.signData.id,{details:JSON.stringify(detailsData)})
    let signRes = await API.signResult(this.data.signData.id)
    this.setData({
      signDetails:signRes
    })
  },
  
  /**
 * 获取两个经纬度之间的距离
 * @param {Number} lat1 第一点的纬度
 * @param {Number} lng1 第一点的经度
 * @param {Number} lat2 第二点的纬度
 * @param {Number} lng2 第二点的经度
 * @returns {Number}
 */
 getDistance(lat1, lng1, lat2, lng2) {
    var radLat1 = Number(lat1) * Math.PI / 180.0;
    var radLat2 = Number(lat2) * Math.PI / 180.0;
    var a = radLat1 - radLat2;
    var b = Number(lng1) * Math.PI / 180.0 - Number(lng2) * Math.PI / 180.0;
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
    s = s * 6378.137; // EARTH_RADIUS;
    s = Math.round(s * 10000) / 10000;
  return s * 1000;
},
  //高德地图根据名称搜索
  mapSearchByName(){
    myAmap.getInputtips({
      keywords: '北京', // 搜索关键词
      success: (res) => {
        console.log('搜索结果:', res.tips);
      }
    });
  },
  //导航到目的地
  goTargetLocation(){
    console.log('导航方法======')
    wx.openLocation({
      latitude: Number(this.data.latitude), // 目标纬度
      longitude: Number(this.data.longitude), // 目标经度
      name: this.data.location.name, // 如"天安门广场"
      address: this.data.location.address, // 如"北京市东城区"
      scale: 18, // 地图缩放级别
      fail: (err) => console.log("纯净环境错误:", err)
    });
  },
  //路线规划
  roadGuide(){
    myAmap.getDrivingRoute({
      origin: '116.481028,39.989643', // 起点坐标
      destination: '116.434446,39.90816', // 终点坐标
      success: (res) => {
        console.log('路线数据:', res.paths);
      }
    });
  }
})

